package com.ruoyi.service;

import com.ruoyi.domain.MFile;
import com.ruoyi.dto.RepFile;
import com.ruoyi.platform.service.BaseManager;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 文件存储表Service接口
 *
 * @author ruoyi
 * @date 2022-09-26
 */
public interface IMFileService extends BaseManager<MFile>
{
    /**
     * 查询文件存储表
     *
     * @param id 文件存储表主键
     * @return 文件存储表
     */
    public MFile selectMFileById(Long id);

    /**
     * 查询文件存储表列表
     *
     * @param mFile 文件存储表
     * @return 文件存储表集合
     */
    public List<MFile> selectMFileList(MFile mFile);

    /**
     * 新增文件存储表
     *
     * @param mFile 文件存储表
     * @return 结果
     */
    public int insertMFile(MFile mFile);

    /**
     * 修改文件存储表
     *
     * @param mFile 文件存储表
     * @return 结果
     */
    public int updateMFile(MFile mFile);

    /**
     * 批量删除文件存储表
     *
     * @param ids 需要删除的文件存储表主键集合
     * @return 结果
     */
    public int deleteMFileByIds(Long[] ids);

    /**
     * 删除文件存储表信息
     *
     * @param id 文件存储表主键
     * @return 结果
     */
    public int deleteMFileById(Long id);

    /**
     * 上传文件到服务器,,返回一个文件url和文件id
     * @param file
     * @return type 1图片 2文档
     */
    RepFile uploadFile(MultipartFile file, String type)throws Exception;

    /**
     * 删除文件服务
     * @param id
     * @return
     */
    int removeFileById(Long id);

    /**
     * 下载文件
     * @param id
     * @return
     */
    void downloadFile(HttpServletResponse res, HttpServletRequest req,Long id);


    void downloadFileByDocId(HttpServletResponse res, HttpServletRequest req, Long docId);

    void downloadFileBySpaceDocId(HttpServletResponse res, HttpServletRequest req, Long spaceDocId);
}
